/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.latesis.bean;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Temporal;

/**
 *
 * @author Alan - Desarrollo
 */
@Entity
@Table(name = "TBL_GRUPO")
public class GrupoBean implements Serializable {

    private Long id;
    private String nombre;
    private String descripcion;
    private String tipo;
    private Date fechaCreacion;
    private List<ChoferBean> choferes;
    private List<MovilBean> moviles;    
    private String estado;

    public GrupoBean() {
        choferes = new ArrayList<ChoferBean>();
        moviles = new ArrayList<MovilBean>();
    }

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    public Long getId() {
        return id;
    }

    @Column(name = "nombre", length = 30, nullable = false)
    public String getNombre() {
        return nombre;
    }

    @Column(name = "descripcion", length = 200, nullable = false)
    public String getDescripcion() {
        return descripcion;
    }
    
    @Column(name = "tipo", length = 1, nullable = false)
    public String getTipo() {
        return tipo;
    }

    @Column(name = "fechaCreacion", nullable = false)
    @Temporal(javax.persistence.TemporalType.TIMESTAMP)
    public Date getFechaCreacion() {
        return fechaCreacion;
    }

    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "TBL_GRUPO_CHOFER", joinColumns = {
        @JoinColumn(name = "grupoId", nullable = false, updatable = false)},
            inverseJoinColumns = {
                @JoinColumn(name = "choferId", nullable = false, updatable = false)})
    public List<ChoferBean> getChoferes() {
        return choferes;
    }
    
    @ManyToMany(fetch = FetchType.LAZY)
    @JoinTable(name = "TBL_GRUPO_MOVIL", joinColumns = {
        @JoinColumn(name = "grupoId", nullable = false, updatable = false)},
            inverseJoinColumns = {
                @JoinColumn(name = "movilId", nullable = false, updatable = false)})
    public List<MovilBean> getMoviles() {
        return moviles;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public void setDescripcion(String descripcion) {
        this.descripcion = descripcion;
    }

    public void setFechaCreacion(Date fechaCreacion) {
        this.fechaCreacion = fechaCreacion;
    }

    public void setChoferes(List<ChoferBean> choferes) {
        this.choferes = choferes;        
    }   

    public void setTipo(String tipo) {
        this.tipo = tipo;
    }   

    public void setMoviles(List<MovilBean> moviles) {
        this.moviles = moviles;
    }

    /**
     * @return the estado
     */
    @Column(name="estado",length = 1,nullable = false)
    public String getEstado() {
        return estado;
    }

    /**
     * @param estado the estado to set
     */
    public void setEstado(String estado) {
        this.estado = estado;
    }

}
